var ruta = window.location.pathname.split("/");
var context = '/'+ruta[1];

function matchStart(target, pattern, matchDirectChildrenOnly) {
    var pos = target.indexOf(pattern);
    if (pos != 0) return false;
    if (!matchDirectChildrenOnly) return true;
    if (target.slice(pos + pattern.length, target.length).indexOf("-") >= 0) return false;
    return true;
}

function collapseAllRows(table){
    var tabla = document.getElementById(table);
    var tbody = tabla.getElementsByTagName('tbody')[0];
    var rows = tbody.getElementsByTagName('tr');
    for (var j = 0; j < rows.length; j++){
        var r = rows[j];
        if(r.id.indexOf("-") >= 0) {
            r.style.display = "none";
        }
    }
}

function toggleRows(elm,table){
    var tabla = document.getElementById(table);
    var tbody = tabla.getElementsByTagName('tbody')[0];
    var rows = tbody.getElementsByTagName('tr');
    elm.src = context+"/images/nolines_plus.gif";
    var newDisplay = "none";
    var thisID = elm.parentNode.parentNode.id + "-";
    for(var i = 0; i < rows.length; i++){
        var r = rows[i];
        if(matchStart(r.id, thisID, true)){
            if(r.style.display == "none"){
                if (document.all) newDisplay = "block";
                else newDisplay = "table-row";
                elm.src = context+"/images/nolines_minus.gif";
            }
            break;
        }
    }
    var matchDirectChildrenOnly = (newDisplay != "none");

    for (var j = 0; j < rows.length; j++) {
        var s = rows[j];
        if (matchStart(s.id, thisID, matchDirectChildrenOnly)) {
            var cell = s.getElementsByTagName("TD")[0];
            var img = cell.getElementsByTagName('img')[0];
            s.style.display = newDisplay;
            img.style.display = 'none';
        }
    }
}

function f_ComparaFecha(fecha1, fecha2){
    // El formato de las fechas debe ser dd/mm/aaaa
    // si devuelve  0 si las fechas son iguales
    // si devuelve  1 si fecha1 > fecha2
    // si devuelve -1 si fecha1 < fecha2
    if (fecha1 == fecha2){
        return 0;
    }

    var anhoFecha1 = fecha1.substr(6,4);
    var mesFecha1  = fecha1.substr(3,2);
    var diaFecha1  = fecha1.substr(0,2);
    var anhoFecha2 = fecha2.substr(6,4);
    var mesFecha2  = fecha2.substr(3,2);
    var diaFecha2  = fecha2.substr(0,2);
    if (eval(anhoFecha1 - anhoFecha2 ) > 0)
        return 1;
    else
    if (eval(anhoFecha1 - anhoFecha2) == 0) {
        if (eval(mesFecha1 - mesFecha2) > 0)
            return 1;
        else
        if (eval(mesFecha1 - mesFecha2) == 0 ) {
            if (eval(diaFecha1 - diaFecha2) >= 0)
                return 1;
        }
    }
    return -1;
}

function addColumLabel(celda,indiceColum,fila,valor,colorAmarillo,idspan,indiceFila){
    var span = '';
    
    celda = fila.insertCell(indiceColum);   

    if(idspan != ''){
        span = document.createElement("span");
        span.setAttribute('id',idspan+indiceFila);
        celda.appendChild(span);
    }else{
        celda.style.display = 'none';
        celda.appendChild(document.createTextNode(valor));
    }

    celda.align = 'center';

    if(colorAmarillo){
        celda.style.backgroundColor = '#FFFFB7';
    }
}

function addSelect(celda,indiceColum,fila,nameSelect,indiceFila){
    celda = fila.insertCell(indiceColum);
    celda.align = 'center';
    valor = document.createElement("select");
    valor.setAttribute('name',nameSelect+indiceFila);
    valor.setAttribute('id',nameSelect+indiceFila);
    valor.className = 'selectSmall';    
    celda.appendChild(valor);
}

function addImputText(celda,indiceColum,fila,nameSelect,indiceFila,ancho,longitud,tipodato,readonly,valorinput,oculta){
    //tipodato : 0 integer, 1 float , 2 alphanumerico
    celda = fila.insertCell(indiceColum);
    celda.align = 'center';
    valor = document.createElement("input");
    valor.type = "text";
    valor.style.width = ancho+'px';
    valor.setAttribute('name',nameSelect+indiceFila);
    valor.setAttribute('id',nameSelect+indiceFila);
    valor.setAttribute('readOnly',readonly);
    if(tipodato == '0') valor.setAttribute('title',valorinput);

    if(valorinput != ''){
        if(tipodato == 1) valorinput = formatCurrency(valorinput);
        valor.setAttribute('value',valorinput);
    }
    if(longitud != 0){
        valor.setAttribute('maxLength',longitud);
    }    
    if(readonly){
        if(longitud != 0){
            valor.style.backgroundColor = '#F2F2F2';
        }else{
            valor.style.border = '0px';
            valor.style.backgroundColor = '#FFFFB7';
            celda.style.backgroundColor = '#FFFFB7';
        }
    }
    if(tipodato == 0){
        valor.style.textAlign = 'center';
    }else if(tipodato == 1){
        valor.style.textAlign = 'right';
        if(!readonly){
            valor.onblur = function(){
                if(validaFloat(this)){
                    if(nameSelect == 'voltotal' || nameSelect == 'voldescontado' || nameSelect == 'solore' || nameSelect == 'sollabor' || nameSelect == 'matescogidodesmonte'){
                        fn_calculaSolidoLabor(indiceFila);
                        fn_calculaSolidoLaborDescontado(indiceFila);
                        fn_calculaDilucionSeleccion(indiceFila);
                        fn_calculaDilucionTotal(indiceFila);
                        fn_calculaTMSTajeo(indiceFila);
                    }
                    if(nameSelect == 'secRealAncho' || nameSelect == 'secRealAlto' || nameSelect == 'avance'){
                        fn_calulaVolumenAvance(indiceFila);
                    }
                    if(nameSelect == 'voltotal'){
                        fn_calculaTMSMineral(indiceFila); // DESQUINCHE  * // TRANSITO
                        fn_calculaTMSDesmonte(indiceFila); // DESQUINCHE
                        fn_calculaTMSParaSuperficie(indiceFila); // SUPERFICIE
                        fn_calculaTotalesDesquinche();
                        fn_calculaTotalesRelleno();
                        fn_calculaTotalesTransitoSuperficie();
                    }
                    if(nameSelect == 'avance'){
                        fn_calculaTotalesAvance();
                    }
                }
            }
        }
    }else{
        valor.style.textAlign = 'left';
    }

    if(oculta){
        celda.style.display = 'none';
    }
    
    valor.className = 'selectSmall';
    celda.appendChild(valor);
}

function addImputTextAutocomplete(indiceColum,fila,nameSelect,indiceFila,ancho,longitud,tipodato,readonly,valorinput,oculta){    
    var celda = fila.insertCell(indiceColum);
    celda.align = 'center';
    valor = document.createElement("input");
    valor.type = "text";
    valor.style.width = ancho+'px';
    valor.setAttribute('name',nameSelect+indiceFila);
    valor.setAttribute('id',nameSelect+indiceFila);
    valor.setAttribute('readOnly',readonly);
    valor.className = 'selectSmall';
    valor.style.textAlign = 'left';
    valor.onfocus = function(){
        if (this.defaultValue == this.value){
            this.value = ""
            if(form.idCubicacionCabecera.value == ''){
                fn_limpiaEstructura(indiceFila);
            }
        }
    }
    valor.onblur = function(){                        
        if(this.value == ''){
            fn_limpiaEstructura(indiceFila);
        }else{
            fn_cargaEstructuraLabor(this.value,indiceFila,'1');
        }
    }

    var l_url = ruta+'/ajax.do?metodo=sincronizar&idUnidadMinera='+form.idUnidadMinera.value+'&fPlanFlexible=0';
    $.get(l_url,
        function parseXML(xml){
            var results = [];
            var j = 0;
            $(xml).find('ESTLABOR').each(function() {
                var text = $.trim($(this).find('LABOR').text());
                var value = $.trim($(this).find('PK_LABOR').text());
                results[results.length] = {
                    'result': value,
                    'value': text
                };

                ESTRUCTURA_LABOR[j] = new objeto_estLabor($.trim($(this).find('PK_LABOR').text()),
                    $.trim($(this).find('ZONA').text()),
                    $.trim($(this).find('ID_VETA').text()),
                    $.trim($(this).find('VETA').text()),
                    $.trim($(this).find('NIVEL').text()),
                    $.trim($(this).find('TIPOLABOR').text()),
                    $.trim($(this).find('LABOR').text()),
                    $.trim($(this).find('ORIENTACION').text()),
                    $.trim($(this).find('FASE_OPERATIVA').text()));
                j++;

            });
            var input = $('input#'+nameSelect+indiceFila);
            input.autocomplete(results,{
                delay:10,
                minChars: 0,
                formatItem: function(data){
                    return $(data).val() ;
                }
            }).result(function(event,data){
            //if(fn_buscarValor($(data).attr('result'),indiceFila) == false){
            fn_cargaEstructuraLabor($(data).attr('result'),indiceFila,'0');
        //this.focus();
        /*}else{
                        alert('Labor ya se encuentra agregada.');
                        document.getElementById('idLaborOperativa'+indiceFila).value = '';
                        document.getElementById('codigoLabor'+indiceFila).value = '';
                        document.getElementById('codigoLabor'+indiceFila).focus();
                        fn_limpiaEstructura(indiceFila);
                    }*/
        });
    }
    );

if(valorinput != ''){
    valor.value = valorinput;
}
celda.appendChild(valor);
}

function clearText(thefield) {
    if (thefield.defaultValue == thefield.value)
        thefield.value = ""
}

function leeColumna(tabla,fila,columna){
    return tabla.tBodies[0].rows[fila].cells[columna].firstChild.nodeValue;
}

function validaFloat(componente){    
    if (!/^([0-9])*[.]?[0-9]*$/.test(componente.value)){
//        alert('Ingrese un valor numerico.');
        jAlert('Ingrese un valor numerico.', 'Sistema de Gesti\u00F3n de Vacaciones');
        componente.select();
        componente.focus();
        return false;
    }else{
        componente.value = formatCurrency(componente.value);
        return true;
    }
}

function validaRango(elemento){
    if(!/^[0-9]{1}(\W[0-9]{1}[1-9]?)?$/.test(elemento.value) && !/^[1]{1}[0]{1}(\W[0]{1}[0]?)?$/.test(elemento.value)){
//        alert('Ingrese el valor num\xe9rico en el rango de <0;10]');
        jAlert('Ingrese el valor num\xe9rico en el rango de <0;10]', 'Sistema de Gesti\u00F3n de Vacaciones');
        elemento.select();
        elemento.focus();
        return false;
    }else{
        elemento.value = formatCurrency(elemento.value);
        return true;
    }
}

function fn_soloNumeros(evt){
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
    if(charCode > 31 && (charCode < 48 || charCode > 57)) {
//        alert("Solo se permiten n\xfAmeros en este campo.");
        jAlert("Solo se permiten n\xfAmeros en este campo.", 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }
    return true;
}

function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)) num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10) cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0,num.length-(4*i+3))+ num.substring(num.length-(4*i+3));
    return (((sign)?'':'-') + num + '.' + cents);
}

function fn_alfaNumerico(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8 || tecla==0) return true; //Tecla de retroceso (para poder borrar)
    patron = /[A-Z a-z 0-9]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}



function fn_validaEntero(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8 || tecla==0) return true; //Tecla de retroceso (para poder borrar)
    patron = /[0-9]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}

function fn_toMayuscula(componente){
    componente.value = componente.value.toUpperCase();
}

function deshabilitaTodo(){    
    for(i=0;i<document.getElementsByTagName("input").length;i++){
        if(document.getElementsByTagName("input")[i].type == "text") {
            //document.getElementsByTagName("input")[i].readOnly = true;
            document.getElementsByTagName("input")[i].disabled = true;
        }
        if(document.getElementsByTagName("input")[i].type == "radio") {
            document.getElementsByTagName("input")[i].disabled = true;
        }
        if(document.getElementsByTagName("input")[i].type == "checkbox") {               
            document.getElementsByTagName("input")[i].disabled = true;
        }
    }
    for(j=0;j<document.getElementsByTagName("select").length;j++){
        document.getElementsByTagName("select")[j].disabled = true;
    }
    for(j=0;j<document.getElementsByTagName("textarea").length;j++){
        document.getElementsByTagName("textarea")[j].disabled = true;
    }
}

/************************** validaciones ************************/
//Constantes de formatos
var FORMAT_HORA_HHMM = /^(0[1-9]|1\d|2[0-3]):([0-5]\d)$/;
var FORMAT_NUMEROS = /^([0-9])*$/;
var FORMAT_NUMEROS_DECIMAL = /^([0-9])*[.]?[0-9]*$/;
var FORMAT_FECHA_CONSULTA = /^\d{2}\/\d{2}\/\d{4}$/;

/*
 *
 */
function fn_validaFormatoHora(obj) {
    if(obj.value.match(FORMAT_HORA_HHMM)) {
        return true;
    }
    return false;
}

/*
 *
 */
function fn_validadRangoHora(objIni,objFin) {
    var horaIni = objIni.value.replace(":","");
    var horaFin = objFin.value.replace(":","");

    if(horaIni >= horaFin) {
        return true;
    }
    return false;
}

/*
  *
  */
function fn_validaSoloNumeros(obj) {
    if(obj.value.match(FORMAT_NUMEROS)) {
        return true;
    }
    return false;
}

/*
 *
 */
function fn_validaSoloNumerosDecimal(obj) {
    if(obj.value.match(FORMAT_NUMEROS_DECIMAL)) {
        return true;
    }
    return false;
}

/*
 *
 */
function fn_valida_fecha_formato(obj) {
    if(obj.value == "") {
        return true;
    }
    if(obj.value.match(FORMAT_FECHA_CONSULTA)) {
        return true;
    }
    return false;
}

/*
 *
 */
//Cantidad de caracteres
var CANT_CARACTERES = 20;
var contenido_textarea = "";

function fn_valida_longitud(obj){
    var cantidad = document.getElementById("caracteres");
    var num_caracteres = obj.value.length

    if (num_caracteres <= CANT_CARACTERES){
        contenido_textarea = obj.value
    }else{
        obj.value = contenido_textarea
    }

    if (num_caracteres >= CANT_CARACTERES){
        cantidad.style.color = "#ff0000";
    }else{
        cantidad.style.color = "#000000";
    }
    fn_cuenta_caracteres(obj);
}

/*
 *
 */
function fn_cuenta_caracteres(obj){
    document.getElementById("caracteres").innerHTML= "(cantidad: " + obj.value.length + ")";
}

/*
 *
 */
function fn_validarRadio(radios) {
    for(i=0; i<radios.length; i++ ) {
        if(radios[i].checked) {
            return true;
        }
    }
    return false;
}

//Funcion para validar la restricción de numero de caracteres enteros y numero de caracteres decimales de un campo DOUBLE

var valorAux = "";
var numCaracteresEntero = 0;
var numCaracteresDecimal = 0;

function fn_validarNumCaracteresEnterosNumCaracteresDecimales(obj, numMaxCaracteresEnteros, numMaxCaracteresDecimales){
    valorAux = (obj.value).split(".");
    if(valorAux.length <= 2){
        if(valorAux.length >= 1){
            numCaracteresEntero = valorAux[0].length;
        }
        if(valorAux.length == 2){
            numCaracteresDecimal = valorAux[1].length;
        }
        if(!validarNumCaracteresEnterosNumCaracteresDecimales(numMaxCaracteresEnteros,numMaxCaracteresDecimales)){           
//            alert(construirMensajeRangoDouble(numMaxCaracteresEnteros, numMaxCaracteresDecimales));
            jAlert(construirMensajeRangoDouble(numMaxCaracteresEnteros, numMaxCaracteresDecimales), 'Sistema de Gesti\u00F3n de Vacaciones');
            obj.value = "";
        }
    }
}

function construirMensajeRangoDouble(numMaxCaracteresEnteros, numMaxCaracteresDecimales){
    var mensaje = "";
    var rangoDouble = "[0-";
    for(i=1; i<=numMaxCaracteresEnteros; i++){
        rangoDouble += "9";
    }
    rangoDouble += ".";
    for(i=1; i<=numMaxCaracteresDecimales; i++){
        rangoDouble += "9";
    }
    rangoDouble += "].";

    mensaje = "El rango es de "+numMaxCaracteresEnteros+" digitos enteros y "+numMaxCaracteresDecimales+" digitos decimales "+rangoDouble;

    return mensaje;
}

function validarNumCaracteresEnterosNumCaracteresDecimales(numMaxCaracteresEnteros, numMaxCaracteresDecimales){
    if(numCaracteresEntero > numMaxCaracteresEnteros || numCaracteresDecimal >numMaxCaracteresDecimales){
        numCaracteresEntero = 0;
        numCaracteresDecimal = 0;
        return false;
    }
    return true;
}

function fn_tituloToolBar(titulo){
    parent.frames.document.getElementById('tool').innerHTML = parent.frames.document.getElementById('panel_title').value+' / '+titulo;
}

//FIN DE LA FUNCION PARA VALIDAR RANGO DE NUMERO DE CARACTERES DE UN DOBLE

function fn_newPage(){
    if(tabla.tBodies[0].rows[aux] != undefined){
        if(aux%2 == 0) tabla.tBodies[0].rows[aux].className = "even";
        else tabla.tBodies[0].rows[aux].className = "odd";
        aux = -1;
    }
}

function fn_selecciona(indice){
    var f = false;
    if(parseInt(indice) >= parseInt(document.getElementById('cboPaginado').value)){
        indice = indice - document.getElementById('cboPaginado').value;
    }
    while(tabla.tBodies[0].rows[indice] == undefined){
        indice = indice - document.getElementById('cboPaginado').value;
    }
    tabla.tBodies[0].rows[indice].className = "selecciona";
    if(aux != -1){
        if(aux != indice){
            if(aux%2 == 0) tabla.tBodies[0].rows[aux].className = "even";
            else tabla.tBodies[0].rows[aux].className = "odd";
        }
    }
    if(aux == indice){
        f = true;
        if(aux%2 == 0) tabla.tBodies[0].rows[aux].className = "even";
        else tabla.tBodies[0].rows[aux].className = "odd";
        aux = -1;
    }
    if(!f) aux = indice;
}

      
/*
   * valida que al menos un checkbox este seleccionado.
   */
function fn_verificarChecked() {
    var check = false;
    for(var i=0; i<document.getElementsByTagName("input").length; i++) {
        if(document.getElementsByTagName("input")[i].type == "checkbox") {
            if(document.getElementsByTagName("input")[i].checked) {
                check = true;
            }
        }
    }
    return check;
}

function fn_bloqueoF5Esc(){     
    document.oncontextmenu = function(){
        return false
        };
    document.onkeydown = function(e){
        if(e)
            document.onkeypress = function(){
                return true;
            }
        var evt = e?e:event;
        if(evt.keyCode==116 || evt.keyCode==27) {
            if(e) document.onkeypress = function(){
                return false;
            }
            else{
                evt.keyCode = 0;
                evt.returnValue = false;
            }
        }
    }
}

function fn_muestraMensajeBorradoFallido(mensajeBorrado){
//    alert(mensajeBorrado);
    jAlert(mensajeBorrado, 'Sistema de Gesti\u00F3n de Vacaciones');
}

function ReplaceAll(Source,stringToFind,stringToReplace){
    var temp = Source;
    var index = temp.indexOf(stringToFind);
    while(index != -1){
        temp = temp.replace(stringToFind,stringToReplace);
        index = temp.indexOf(stringToFind);
    }
    return temp;

}

function fn_validarCheck(check) {
    var checkArray = new Array();
    var count = 0;
    for(i=0; i<check.length; i++ ) {
        if(check[i].checked) {
            checkArray[count]= check[i].id.substring(5);
            count++;
        }
    }
    return checkArray;
}

function fn_eliminar_fila(arrayCheckbox) {
    if(arrayCheckbox.length > 0) {
        jConfirm('Ud. desea eliminar el registro.', 'Sistema de Gesti\u00F3n de Vacaciones', function(r) {
//        if(confirm('Ud. desea eliminar el registro.')){
            if(r){
            $.each(arrayCheckbox, function(indexCheck, valueCheck) {
                $("#tr"+valueCheck).remove();
            });
        }
      });  
    }else{
//        alert('Seleccione el registro a eliminar.');
        jAlert('Seleccione el registro a eliminar.', 'Sistema de Gesti\u00F3n de Vacaciones');
    }
}

    function retornarHeight(h){
        var posicion_y;
        posicion_y=(screen.height/2)-(h/2);
        return posicion_y;
    }

    function retornarWidth(w){
        var posicion_x;
        posicion_x=(screen.width/2)-(w/2);
        return posicion_x;
    }